<?php
namespace Kuoqi\Html\Kuoqiui;
use Kuoqi\Error;

/**
 * Class Menu 菜单模块的相关控制
 * @package Kuoqi\Html\Kuoqiui
 */
class Menu{

    public $input_data = array();
    public $input_topid = 0;
    public $input_id = 'id';
    public $input_pid = 'pid';
    public $input_href = 'href';
    public $input_code = 'name';
    public $stream = '';
    public function __construct($data = array()){
        $this->input_data = $data;
    }

    /**
     * createby kuoqi at 2022/11/8 9:58 尝试已菜单的方式输出
     * @param int $pid
     * @return string|void
     * @throws Error
     */
    public function toMenuWithHref($pid = 0){
        $stream = '';
        if(!is_array($this->input_data)){ return '';}
        foreach($this->input_data as $item){
            if(!isset($item[$this->input_pid])){ $this->input_pid = 0;}
            if(!isset($item[$this->input_code])){ return Error::showErrcode(0x001000);}
            if($item[$this->input_pid]==$pid){
                //这里判定使用哪种方式
                $hassub = -1;
                foreach($this->input_data as $sitem){
                    if($sitem[$this->input_pid]==$item[$this->input_id]){
                        //有子页面的情况
                        $hassub = $item[$this->input_id];break;
                    }
                }
                if($hassub==-1){
                    if(!isset($item[$this->input_href])){ return Error::showErrcode(0x001001);}
                    $stream .= sprintf('<li><a class="init" data-id data-url data-title="%s" href="%s">%s</a></li>'
                        ,$item[$this->input_code]
                        ,$item[$this->input_href]
                        ,'<span>'.$item[$this->input_code].'</span>'
                    );
                }else{
                    //有子页面
                    $stream .= sprintf('<li><a class="init" >%s</a>%s</li>'
                        ,$item[$this->input_code]
                        ,'<ul>'.$this->toMenuWithHref($hassub).'</ul>'
                    );
                }
            }
        }
        return $stream;
    }

    /**
     * createby kuoqi at 2022/11/9 21:26 点击的方法菜单的部分获取
     * @param int $pid
     * @param string $funcname
     * @return string|void
     */
    public function toMenuWithClick($pid = 0,$funcname=''){
        $stream = '';
        if(!is_array($this->input_data)){ return '';}
        foreach($this->input_data as $item){
            if(!isset($item[$this->input_pid])){ $this->input_pid = 0;}
            if(!isset($item[$this->input_code])){ return Error::showErrcode(0x001000);}
            if($item[$this->input_pid]==$pid){
                //这里判定使用哪种方式
                $hassub = -1;
                foreach($this->input_data as $sitem){
                    if($sitem[$this->input_pid]==$item[$this->input_id]){
                        //有子页面的情况
                        $hassub = $item[$this->input_id];break;
                    }
                }
                if($hassub==-1){
                    if(!isset($item[$this->input_href])){ return Error::showErrcode(0x001001);}
                    $stream .= sprintf('<li><a class="init" data-id data-url data-title="%s" onclick="%s(this)" data-href="%s">%s</a></li>'
                        ,$item[$this->input_code]
                        ,$funcname
                        ,$item[$this->input_href]
                        ,'<span>'.$item[$this->input_code].'</span>'
                    );
                }else{
                    //有子页面
                    $stream .= sprintf('<li><a class="init" >%s</a>%s</li>'
                        ,$item[$this->input_code]
                        ,'<ul>'.$this->toMenuWithClick($hassub,$funcname).'</ul>'
                    );
                }
            }
        }
        return $stream;
    }

}